return {
  {
    "saghen/blink.cmp",
    optional = true,
    dependencies = {
      "saghen/blink.compat",
      "moyiz/blink-emoji.nvim",
      "hrsh7th/cmp-calc",
      "roginfarrer/cmp-css-variables",
      "xzbdmw/colorful-menu.nvim",
    },
    opts = {
      -- keymap = {
      --   -- Manually invoke minuet completion.
      --   -- ["<A-y>"] = require("minuet").make_blink_map(),
      --   ["<Tab>"] = {
      --     "snippet_forward",
      --     function() -- sidekick next edit suggestion
      --       return require("sidekick").nes_jump_or_apply()
      --     end,
      --     function() -- if you are using Neovim's native inline completions
      --       return vim.lsp.inline_completion.get()
      --     end,
      --     "fallback",
      --   },
      -- },
      appearance = {
        use_nvim_cmp_as_default = true,
        nerd_font_variant = "mono",
      },
      completion = {
        accept = {
          -- experimental auto-brackets support
          auto_brackets = {
            enabled = true,
          },
        },
        list = {
          selection = {
            preselect = true,
            auto_insert = true,
          },
        },
        menu = {
          border = "single",
          scrollbar = false,
          draw = {
            columns = { { "kind_icon" }, { "label", gap = 1 } },
            components = {
              label = {
                text = function(ctx)
                  return require("colorful-menu").blink_components_text(ctx)
                end,
                highlight = function(ctx)
                  return require("colorful-menu").blink_components_highlight(ctx)
                end,
              },
            },
          },
        },
        documentation = {
          window = { border = "single" },
          auto_show = true,
          auto_show_delay_ms = 200,
        },
        ghost_text = {
          enabled = vim.g.ai_cmp,
        },
      },
      sources = {
        default = {
          "lsp",
          "path",
          "snippets",
          "buffer",
          -- "git",
          "emoji",
        },
        compat = {
          "calc",
          "npm",
          "css-variables",
        },
        providers = {
          cmdline = {
            enabled = function()
              return vim.fn.getcmdtype() ~= ":" or not vim.fn.getcmdline():match("^[%%0-9,'<>%-]*!")
            end,
          },
          -- git = {
          --   module = "blink-cmp-git",
          --   name = "Git",
          --   opts = {},
          --   -- enabled = function()
          --   --   return vim.o.filetype == "gitcommit" or vim.o.filetype == "markdown"
          --   -- end,
          -- },
          emoji = {
            module = "blink-emoji",
            name = "Emoji",
            score_offset = 15,
            opts = { insert = true },
            should_show_items = function()
              return vim.tbl_contains({ "gitcommit", "markdown" }, vim.o.filetype)
            end,
          },
          calc = {
            name = "calc",
            module = "blink.compat.source",
            opts = {},
          },
          css_variables = {
            name = "css_variables",
            module = "blink.compat.source",
            opts = {},
          },
          npm = {
            name = "npm",
            module = "blink.compat.source",
            opts = {
              keyword_length = 3,
            },
          },
        },
      },
    },
  },
}
